package com.qdlc.p2p.dal.dto;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import com.qdlc.p2p.common.constant.Global;
import com.qdlc.p2p.common.util.OrderNoUtils;
import com.qdlc.p2p.common.util.StringUtil;

/**
 * 资金提现记录表
 *
 * @author liya
 * @version 1.1.0.0
 */
@Entity
@Table(name = Global.DB_PREFIX + "account_cash")
public class AccountCash {

    /** 主键 */
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;

    /** 用户ID */
    @Column(name = "user_id")
    private long userId;

    /** 状态 4：申请提现 1：提现成功，2：提现失败 8：处理中 */
    private int status;

    /** 银行账号 */
    private String bankNo;

    /** 所属银行 */
    private String bank;

    /** 支行 */
    private String branch;

    /** 提现总额 */
    private double money;

    /** 到账金额 */
    private double amount;

    /** 手续费 */
    private double fee;

    /** 提现手续费承担方:1 平台 2个人 */
    private int feeBear;

    /** 提现方式 0：T+0 1：T+1 */
    private int type;

    /** 取现订单号 */
    private String orderNo;

    /** 添加时间 */
    private Date addTime;

    /** 添加IP */
    private String addIp;

    /** 审核备注 * */
    private String verifyRemark;

    /** 审核人 * */
    private String verifyUserName;

    private Date verifyTime;


    public AccountCash() {
        super();
    }

    public AccountCash(User user, double money) {
        super();
        this.orderNo = OrderNoUtils.getSerialNumber();
        this.userId = user.getUserId();
        this.money = money;
    }

    /**
     * 获取(隐藏一定位数的)银行账号
     *
     * @return 银行账号
     */
    public String getHideAccount() {
        if (StringUtil.isNotBlank(bankNo)) {
            return "**************" + bankNo.substring(bankNo.length() - 4, bankNo.length());
        }
        return "";
    }

    /**
     * 获取主键
     *
     * @return 主键
     */
    public long getId() {
        return id;
    }

    /**
     * 设置主键
     *
     * @param id 要设置的主键
     */
    public void setId(long id) {
        this.id = id;
    }

    public long getUserId() {
		return userId;
	}

	public void setUserId(long userId) {
		this.userId = userId;
	}

	/**
     * 获取状态 状态 0：申请提现 1：提现成功，2：提现失败 4：用户取消提现 ，
     *
     * @return
     */
    public int getStatus() {
        return status;
    }

    /**
     * 设置状态 状态 0：申请提现 1：提现成功，2：提现失败 4：用户取消提现 ，
     *
     * @param status 要设置的状态
     */
    public void setStatus(int status) {
        this.status = status;
    }

    public String getBankNo() {
        return bankNo;
    }

    public void setBankNo(String bankNo) {
        this.bankNo = bankNo;
    }

    /**
     * 获取所属银行
     *
     * @return 所属银行
     */
    public String getBank() {
        return bank;
    }

    /**
     * 设置所属银行
     *
     * @param bank 要设置的所属银行
     */
    public void setBank(String bank) {
        this.bank = bank;
    }

    /**
     * 获取支行
     *
     * @return 支行
     */
    public String getBranch() {
        return branch;
    }

    /**
     * 设置支行
     *
     * @param branch 要设置的支行
     */
    public void setBranch(String branch) {
        this.branch = branch;
    }

    /**
     * 获取账户总额
     *
     * @return 账户总额
     */
    public double getMoney() {
        return money;
    }

    /**
     * 获取账户总额显示值
     *
     * @return 账户总额显示值
     */
    public String getMoneyDisp() {
        return String.valueOf(money).concat("元");
    }

    /**
     * 设置账户总额
     *
     * @param money 要设置的账户总额
     */
    public void setMoney(double money) {
        this.money = money;
    }

    /**
     * 获取到账金额
     *
     * @return 到账金额
     */
    public double getAmount() {
        return amount;
    }

    /**
     * 获取到账金额显示值
     *
     * @return 获取到账金额显示值
     */
    public String getAccountDisp() {
        return String.valueOf(amount).concat("元");
    }

    /**
     * 设置到账金额
     *
     * @param account 要设置的到账金额
     */
    public void setAmount(double amount) {
        this.amount = amount;
    }

    /**
     * 获取手续费
     *
     * @return 手续费
     */
    public double getFee() {
        return fee;
    }

    /**
     * 获取手续费显示值
     *
     * @return 获取手续费显示值
     */
    public String getFeeDisp() {
        return String.valueOf(fee).concat("元");
    }

    /**
     * 设置手续费
     *
     * @param fee 要设置的手续费
     */
    public void setFee(double fee) {
        this.fee = fee;
    }

    public Date getAddTime() {
        return addTime;
    }

    public void setAddTime(Date addTime) {
        this.addTime = addTime;
    }

    /**
     * 获取添加IP
     *
     * @return 添加IP
     */
    public String getAddIp() {
        return addIp;
    }

    /**
     * 设置添加IP
     *
     * @param addIp 要设置的添加IP
     */
    public void setAddIp(String addIp) {
        this.addIp = addIp;
    }

    /**
     * 获取提现方式
     *
     * @return 提现方式对应数值 0：T+0 1：T+1
     */
    public int getType() {
        return type;
    }

    /**
     * 设置提现的方式
     *
     * @param type 提现方式
     */
    public void setType(int type) {
        this.type = type;
    }

    public String getOrderNo() {
        return orderNo;
    }

    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }

    public int getFeeBear() {
        return feeBear;
    }

    public void setFeeBear(int feeBear) {
        this.feeBear = feeBear;
    }

    public String getVerifyRemark() {
        return verifyRemark;
    }

    public void setVerifyRemark(String verifyRemark) {
        this.verifyRemark = verifyRemark;
    }

    public String getVerifyUserName() {
        return verifyUserName;
    }

    public void setVerifyUserName(String verifyUserName) {
        this.verifyUserName = verifyUserName;
    }

    public Date getVerifyTime() {
        return verifyTime;
    }

    public void setVerifyTime(Date verifyTime) {
        this.verifyTime = verifyTime;
    }

    /**
     * 手续费承担方名称
     *
     * @return 手续费承担方名称
     */
    public String getFeeBearName() {
        if (feeBear == 1) {
            return "平台垫付";
        } else if (feeBear == 2) {
            return "个人承担";
        }
        return "";
    }
}
